/**
 * Copyright (c) 2015-2030 by Beijing Yanlight Co., Ltd.
 * All rights reserved.
 */
package com.yanlight.util;

import javax.servlet.http.HttpSession;

import com.yanlight.Constants;

/**
 * 
 *
 * @author haolw
 * @time 2017/03/10
 */
public abstract class SessionUtil {

	/**
	 * 从session中获取信息
	 * 
	 * @param key
	 * @return
	 */
	public static Object getAttribute(String key) {
		return WebUtil.getSession().getAttribute(key);
	}

	/**
	 * 从session中获取指定信息
	 * 
	 * @param key
	 * @param T
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getAttribute(String key, Class<T> T) {
		Object object = WebUtil.getSession().getAttribute(key);
		if (object == null) {
			return null;
		}
		return (T) object;
	}

	/**
	 * 向session中存储信息
	 * 
	 * @param key
	 * @return
	 */
	public static void saveAttribute(String key, Object value) {
		WebUtil.getSession().setAttribute(key, value);
	}

	/**
	 * 从session中移除信息
	 * 
	 * @param key
	 * @return
	 */
	public static void remove(String key) {
		WebUtil.getSession().removeAttribute(key);
	}

	/**
	 * 清空session
	 * 
	 * @param key
	 * @return
	 */
	public static void clearCurrentSession() {
		WebUtil.getSession().invalidate();
	}

	/**
	 * 保存验证码
	 * 
	 * @param verifyCode
	 */
	public static void saveVerifyCode(String verifyCode) {
		saveAttribute(Constants.VERIFY_CODE, verifyCode);
	}

	/**
	 * 获取验证码
	 * 
	 * @return
	 */
	public static String getVerifyCode() {
		return getAttribute(Constants.VERIFY_CODE, String.class);
	}

	/**
	 * 保存用户id
	 * 
	 * @param userId
	 */
	public static void saveUserId(Integer userId) {
		saveAttribute(Constants.USER_ID, userId);
	}

	/**
	 * 获取用户id
	 * 
	 * @return
	 */
	public static Integer getUserId() {
		Object value = getAttribute(Constants.USER_ID);
		if (value == null) {
			return null;
		}
		return Integer.valueOf(String.valueOf(value));
	}

	/**
	 * 获取用户id
	 * 
	 * @param session
	 * @return
	 */
	public static Integer getUserId(HttpSession session) {
		Object value = session.getAttribute(Constants.USER_ID);
		if (value == null) {
			return null;
		}
		return Integer.valueOf(String.valueOf(value));
	}

	/**
	 * 保存用户id
	 * 
	 * @param userId
	 */
	public static void saveCompanyId(Integer companyId) {
		saveAttribute(Constants.COMPANY_ID, companyId);
	}

	/**
	 * 获取用户id
	 * 
	 * @return
	 */
	public static Integer getCompanyId() {
		Object value = getAttribute(Constants.COMPANY_ID);
		if (value == null) {
			return null;
		}
		return Integer.valueOf(String.valueOf(value));
	}

	/**
	 * 获取用户id
	 * 
	 * @param session
	 * @return
	 */
	public static Integer getCompanyId(HttpSession session) {
		Object value = session.getAttribute(Constants.COMPANY_ID);
		if (value == null) {
			return null;
		}
		return Integer.valueOf(String.valueOf(value));
	}

	/**
	 * 保存TOKEN
	 * 
	 * @param userId
	 */
	public static void saveToken(String token) {
		saveAttribute(Constants.TOKEN, token);
	}

	/**
	 * 获取TOKEN
	 * 
	 * @return
	 */
	public static String getToken() {
		Object value = getAttribute(Constants.TOKEN);
		if (value == null) {
			return null;
		}
		return String.valueOf(value);
	}

	/**
	 * 获取TOKEN
	 * 
	 * @param session
	 * @return
	 */
	public static String getToken(HttpSession session) {
		Object value = session.getAttribute(Constants.TOKEN);
		if (value == null) {
			return null;
		}
		return String.valueOf(value);
	}

}
